package instalador;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 *
 * @author acactown
 */
public class CrearXML implements Runnable {

    private int porcentaje;
    private JFrame padre;
    private static PrintWriter escritorArchivo;
    private static File fileXML;
    private static boolean creado;

    public CrearXML(JFrame padre) {
        this.padre = padre;
        creado = false;
    }

    private void crearEscritor() {
        try {
            fileXML = new File(VariablesDeEntorno.RUTA + "/lib/propiedadesConexion.xml");
            if (fileXML.exists()) {
                fileXML.delete();
            }
            escritorArchivo = new PrintWriter(new FileWriter(fileXML, true));
            creado = true;
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, "Por favor verifique que tiene permisos de Escritura \n La instalacion se llevo a cabo mas no se genero el Archivo de Configuracion.", "ERROR de Escritura.", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void escribirXML(String[] sentencias) {
        if (!creado) {
            crearEscritor();
            escribirXML(sentencias);
        } else {
            for (int i = 0; i < sentencias.length; i++) {
                escritorArchivo.println(sentencias[i]);
                escritorArchivo.flush();
                porcentaje = ((i + 1) * 100) / sentencias.length;
                VentanaInstalador.jProgressBar.setValue(porcentaje);
                VentanaInstalador.jProgressBar.setString(String.valueOf(porcentaje) + " %");
            }
        }
    }

    private void crearServidor() {
        String[] sentencias = {"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>",
            "<!DOCTYPE propiedadesConexion SYSTEM \"propiedadesConexion.dtd\">",
            "<propiedadesConexion>",
            "        <conexion>",
            "                <peticionPuerto port=\"" + VariablesDeEntorno.PUERTO + "\" />",
            "        </conexion>",
            "</propiedadesConexion>"
        };
        escribirXML(sentencias);
    }

    private void crearCliente() {
        String[] sentencias = {"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>",
            "<!DOCTYPE propiedadesConexion SYSTEM \"propiedadesConexion.dtd\">",
            "<propiedadesConexion>",
            "        <conexion>",
            "                <servidorIp ip=\"" + VariablesDeEntorno.IPSERVIDOR + "\" />",
            "                <peticionPuerto port=\"" + VariablesDeEntorno.PUERTO + "\" />",
            "        </conexion>",
            "</propiedadesConexion>"
        };
        escribirXML(sentencias);
    }

    public void run() {
        VentanaInstalador.jLabelEvento.setText("Creando el Archivo de Configuacion.");
        if (VariablesDeEntorno.TIPOINSTALACION.equals("CLIENTE")) {
            crearCliente();
        } else {
            crearServidor();
        }
        VentanaInstalador.jTextPane5.setText(VentanaInstalador.jTextPane5.getText() + "\n    Archivo de Configuracion...OK\n\n                      La instalacion Fue Exitosa.");
        VentanaInstalador.jLabelEvento.setText("La instalacion Fue Exitosa");
    }
}
